package com.myproxyDynamicCglib;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class JiezhangProxy implements MethodInterceptor{

	private Enhancer enhancer = new Enhancer();
	
	public Object getProxy(Class<?> clazz){
		//设置创建子类的类
		enhancer.setSuperclass(clazz);
		enhancer.setCallback(this);
		return enhancer.create();
	}
	
	
	/**
	 * 拦截所有目标类方法的调用
	 * 参数一：目标类的实例；
	 * 参数二：目标方法的反射对象；
	 * 参数三：方法的参数；
	 * 参数四：代理类的实例；
	 * 
	 */
	@Override
	public Object intercept(Object obj, Method m, Object[] args, MethodProxy proxy) throws Throwable {

		//代理类调用父类的方法；
		proxy.invokeSuper(obj, args);
		System.out.println("结账...JiezhangProxy");
		return null;
	}

}
